package homework.StackQueue;

import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

class QueueStack {
    private Queue<Integer> mainQueue;   // 主队列
    private Queue<Integer> tempQueue;   // 临时队列（用于暂存数据）

    public QueueStack() {
        mainQueue = new LinkedList<>();
        tempQueue = new LinkedList<>();
    }

    // 入栈操作
    public void push(int x) {
        // 1. 将新元素添加到临时队列
        tempQueue.offer(x);

        // 2. 将主队列中的所有元素转移到临时队列
        while (!mainQueue.isEmpty()) {
            tempQueue.offer(mainQueue.poll());
        }

        // 3. 交换主队列和临时队列
        Queue<Integer> temp = mainQueue;
        mainQueue = tempQueue;
        tempQueue = temp;
    }

    // 出栈操作
    public int pop() {
        return mainQueue.poll();
    }

    // 查看栈顶元素
    public int top() {
        return mainQueue.peek();
    }

    public static void main(String[] args) {
        QueueStack stack = new QueueStack();

        stack.push(1);
        stack.push(2);
        stack.push(3);

        System.out.println("Top: " + stack.top());
        System.out.println("Pop: " + stack.pop());
        System.out.println("Top: " + stack.top());
        System.out.println("Pop: " + stack.pop());
        stack.push(4);
        System.out.println("Top: " + stack.top());
        System.out.println("Pop: " + stack.pop());
        System.out.println("Pop: " + stack.pop());
    }

}
